sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
↳ QTRS
↳ Overlay + Local Confluence
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
MAX(cons(u, l)) → MAX(l)
ST(n, l) → COND1(member(n, l), n, l)
GT(s(u), s(v)) → GT(u, v)
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
COND1(false, n, l) → MAX(l)
ST(n, l) → MEMBER(n, l)
COND1(false, n, l) → GT(n, max(l))
MEMBER(n, cons(m, l)) → MEMBER(n, l)
SORT(l) → ST(0, l)
EQUAL(s(x), s(y)) → EQUAL(x, y)
MAX(cons(u, l)) → IF(gt(u, max(l)), u, max(l))
COND1(false, n, l) → COND2(gt(n, max(l)), n, l)
MEMBER(n, cons(m, l)) → OR(equal(n, m), member(n, l))
MEMBER(n, cons(m, l)) → EQUAL(n, m)
MAX(cons(u, l)) → GT(u, max(l))
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
MAX(cons(u, l)) → MAX(l)
ST(n, l) → COND1(member(n, l), n, l)
GT(s(u), s(v)) → GT(u, v)
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
COND1(false, n, l) → MAX(l)
ST(n, l) → MEMBER(n, l)
COND1(false, n, l) → GT(n, max(l))
MEMBER(n, cons(m, l)) → MEMBER(n, l)
SORT(l) → ST(0, l)
EQUAL(s(x), s(y)) → EQUAL(x, y)
MAX(cons(u, l)) → IF(gt(u, max(l)), u, max(l))
COND1(false, n, l) → COND2(gt(n, max(l)), n, l)
MEMBER(n, cons(m, l)) → OR(equal(n, m), member(n, l))
MEMBER(n, cons(m, l)) → EQUAL(n, m)
MAX(cons(u, l)) → GT(u, max(l))
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
GT(s(u), s(v)) → GT(u, v)
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
GT(s(u), s(v)) → GT(u, v)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
GT(s(u), s(v)) → GT(u, v)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
MAX(cons(u, l)) → MAX(l)
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
MAX(cons(u, l)) → MAX(l)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
MAX(cons(u, l)) → MAX(l)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
EQUAL(s(x), s(y)) → EQUAL(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
MEMBER(n, cons(m, l)) → MEMBER(n, l)
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
MEMBER(n, cons(m, l)) → MEMBER(n, l)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
MEMBER(n, cons(m, l)) → MEMBER(n, l)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
ST(n, l) → COND1(member(n, l), n, l)
COND1(false, n, l) → COND2(gt(n, max(l)), n, l)
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
sort(l) → st(0, l)
st(n, l) → cond1(member(n, l), n, l)
cond1(true, n, l) → cons(n, st(s(n), l))
cond1(false, n, l) → cond2(gt(n, max(l)), n, l)
cond2(true, n, l) → nil
cond2(false, n, l) → st(s(n), l)
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
or(x, true) → true
or(x, false) → x
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
if(true, u, v) → u
if(false, u, v) → v
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
ST(n, l) → COND1(member(n, l), n, l)
COND1(false, n, l) → COND2(gt(n, max(l)), n, l)
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
if(true, u, v) → u
if(false, u, v) → v
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
or(x, true) → true
or(x, false) → x
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
sort(x0)
st(x0, x1)
cond1(true, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
cond2(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
ST(n, l) → COND1(member(n, l), n, l)
COND1(false, n, l) → COND2(gt(n, max(l)), n, l)
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
if(true, u, v) → u
if(false, u, v) → v
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
or(x, true) → true
or(x, false) → x
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)
(1) (ST(s(x4), x5)=ST(x6, x7) ⇒ ST(x6, x7)≥COND1(member(x6, x7), x6, x7))
(2) (ST(s(x4), x5)≥COND1(member(s(x4), x5), s(x4), x5))
(3) (ST(s(x8), x9)=ST(x10, x11) ⇒ ST(x10, x11)≥COND1(member(x10, x11), x10, x11))
(4) (ST(s(x8), x9)≥COND1(member(s(x8), x9), s(x8), x9))
(5) (COND1(member(x12, x13), x12, x13)=COND1(false, x14, x15) ⇒ COND1(false, x14, x15)≥COND2(gt(x14, max(x15)), x14, x15))
(6) (member(x12, x13)=false ⇒ COND1(false, x12, x13)≥COND2(gt(x12, max(x13)), x12, x13))
(7) (false=false ⇒ COND1(false, x42, nil)≥COND2(gt(x42, max(nil)), x42, nil))
(8) (or(equal(x43, x44), member(x43, x45))=false∧(member(x43, x45)=false ⇒ COND1(false, x43, x45)≥COND2(gt(x43, max(x45)), x43, x45)) ⇒ COND1(false, x43, cons(x44, x45))≥COND2(gt(x43, max(cons(x44, x45))), x43, cons(x44, x45)))
(9) (COND1(false, x42, nil)≥COND2(gt(x42, max(nil)), x42, nil))
(10) (equal(x43, x44)=x46∧member(x43, x45)=x47∧or(x46, x47)=false∧(member(x43, x45)=false ⇒ COND1(false, x43, x45)≥COND2(gt(x43, max(x45)), x43, x45)) ⇒ COND1(false, x43, cons(x44, x45))≥COND2(gt(x43, max(cons(x44, x45))), x43, cons(x44, x45)))
(11) (x49=false∧equal(x43, x44)=x49∧member(x43, x45)=false∧(member(x43, x45)=false ⇒ COND1(false, x43, x45)≥COND2(gt(x43, max(x45)), x43, x45)) ⇒ COND1(false, x43, cons(x44, x45))≥COND2(gt(x43, max(cons(x44, x45))), x43, cons(x44, x45)))
(12) (x49=false∧equal(x43, x44)=x49∧COND1(false, x43, x45)≥COND2(gt(x43, max(x45)), x43, x45) ⇒ COND1(false, x43, cons(x44, x45))≥COND2(gt(x43, max(cons(x44, x45))), x43, cons(x44, x45)))
(13) (equal(x43, x44)=false∧COND1(false, x43, x45)≥COND2(gt(x43, max(x45)), x43, x45) ⇒ COND1(false, x43, cons(x44, x45))≥COND2(gt(x43, max(cons(x44, x45))), x43, cons(x44, x45)))
(14) (false=false∧COND1(false, s(x50), x45)≥COND2(gt(s(x50), max(x45)), s(x50), x45) ⇒ COND1(false, s(x50), cons(0, x45))≥COND2(gt(s(x50), max(cons(0, x45))), s(x50), cons(0, x45)))
(15) (false=false∧COND1(false, 0, x45)≥COND2(gt(0, max(x45)), 0, x45) ⇒ COND1(false, 0, cons(s(x51), x45))≥COND2(gt(0, max(cons(s(x51), x45))), 0, cons(s(x51), x45)))
(16) (equal(x52, x53)=false∧COND1(false, s(x52), x45)≥COND2(gt(s(x52), max(x45)), s(x52), x45)∧(∀x54:equal(x52, x53)=false∧COND1(false, x52, x54)≥COND2(gt(x52, max(x54)), x52, x54) ⇒ COND1(false, x52, cons(x53, x54))≥COND2(gt(x52, max(cons(x53, x54))), x52, cons(x53, x54))) ⇒ COND1(false, s(x52), cons(s(x53), x45))≥COND2(gt(s(x52), max(cons(s(x53), x45))), s(x52), cons(s(x53), x45)))
(17) (COND1(false, s(x50), x45)≥COND2(gt(s(x50), max(x45)), s(x50), x45) ⇒ COND1(false, s(x50), cons(0, x45))≥COND2(gt(s(x50), max(cons(0, x45))), s(x50), cons(0, x45)))
(18) (COND1(false, 0, x45)≥COND2(gt(0, max(x45)), 0, x45) ⇒ COND1(false, 0, cons(s(x51), x45))≥COND2(gt(0, max(cons(s(x51), x45))), 0, cons(s(x51), x45)))
(19) (COND1(false, s(x52), x45)≥COND2(gt(s(x52), max(x45)), s(x52), x45) ⇒ COND1(false, s(x52), cons(s(x53), x45))≥COND2(gt(s(x52), max(cons(s(x53), x45))), s(x52), cons(s(x53), x45)))
(20) (COND1(member(x22, x23), x22, x23)=COND1(true, x24, x25) ⇒ COND1(true, x24, x25)≥ST(s(x24), x25))
(21) (member(x22, x23)=true ⇒ COND1(true, x22, x23)≥ST(s(x22), x23))
(22) (or(equal(x56, x57), member(x56, x58))=true∧(member(x56, x58)=true ⇒ COND1(true, x56, x58)≥ST(s(x56), x58)) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(23) (equal(x56, x57)=x59∧member(x56, x58)=x60∧or(x59, x60)=true∧(member(x56, x58)=true ⇒ COND1(true, x56, x58)≥ST(s(x56), x58)) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(24) (true=true∧equal(x56, x57)=x61∧member(x56, x58)=true∧(member(x56, x58)=true ⇒ COND1(true, x56, x58)≥ST(s(x56), x58)) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(25) (x62=true∧equal(x56, x57)=x62∧member(x56, x58)=false∧(member(x56, x58)=true ⇒ COND1(true, x56, x58)≥ST(s(x56), x58)) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(26) (equal(x56, x57)=x61∧member(x56, x58)=true∧(member(x56, x58)=true ⇒ COND1(true, x56, x58)≥ST(s(x56), x58)) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(27) (equal(x56, x57)=true ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(28) (equal(x56, x57)=x61∧COND1(true, x56, x58)≥ST(s(x56), x58) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(29) (COND1(true, x56, x58)≥ST(s(x56), x58) ⇒ COND1(true, x56, cons(x57, x58))≥ST(s(x56), cons(x57, x58)))
(30) (true=true ⇒ COND1(true, 0, cons(0, x58))≥ST(s(0), cons(0, x58)))
(31) (equal(x65, x66)=true∧(∀x67:equal(x65, x66)=true ⇒ COND1(true, x65, cons(x66, x67))≥ST(s(x65), cons(x66, x67))) ⇒ COND1(true, s(x65), cons(s(x66), x58))≥ST(s(s(x65)), cons(s(x66), x58)))
(32) (COND1(true, 0, cons(0, x58))≥ST(s(0), cons(0, x58)))
(33) (COND1(true, x65, cons(x66, x58))≥ST(s(x65), cons(x66, x58)) ⇒ COND1(true, s(x65), cons(s(x66), x58))≥ST(s(s(x65)), cons(s(x66), x58)))
(34) (COND2(gt(x34, max(x35)), x34, x35)=COND2(false, x36, x37) ⇒ COND2(false, x36, x37)≥ST(s(x36), x37))
(35) (max(x35)=x68∧gt(x34, x68)=false ⇒ COND2(false, x34, x35)≥ST(s(x34), x35))
(36) (false=false∧max(x35)=x69 ⇒ COND2(false, 0, x35)≥ST(s(0), x35))
(37) (gt(x71, x72)=false∧max(x35)=s(x72)∧(∀x73:gt(x71, x72)=false∧max(x73)=x72 ⇒ COND2(false, x71, x73)≥ST(s(x71), x73)) ⇒ COND2(false, s(x71), x35)≥ST(s(s(x71)), x35))
(38) (COND2(false, 0, x35)≥ST(s(0), x35))
(39) (if(gt(x74, max(x75)), x74, max(x75))=s(x72)∧gt(x71, x72)=false∧(∀x73:gt(x71, x72)=false∧max(x73)=x72 ⇒ COND2(false, x71, x73)≥ST(s(x71), x73))∧(∀x76,x77,x78:max(x75)=s(x76)∧gt(x77, x76)=false∧(∀x78:gt(x77, x76)=false∧max(x78)=x76 ⇒ COND2(false, x77, x78)≥ST(s(x77), x78)) ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(x71), cons(x74, x75))≥ST(s(s(x71)), cons(x74, x75)))
(40) (gt(x74, x81)=x79∧max(x75)=x80∧if(x79, x74, x80)=s(x72)∧gt(x71, x72)=false∧(∀x73:gt(x71, x72)=false∧max(x73)=x72 ⇒ COND2(false, x71, x73)≥ST(s(x71), x73))∧(∀x76,x77,x78:max(x75)=s(x76)∧gt(x77, x76)=false∧(∀x78:gt(x77, x76)=false∧max(x78)=x76 ⇒ COND2(false, x77, x78)≥ST(s(x77), x78)) ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(x71), cons(x74, x75))≥ST(s(s(x71)), cons(x74, x75)))
(41) (x82=s(x72)∧gt(x82, x81)=true∧max(x75)=x83∧gt(x71, x72)=false∧(∀x73:gt(x71, x72)=false∧max(x73)=x72 ⇒ COND2(false, x71, x73)≥ST(s(x71), x73))∧(∀x76,x77,x78:max(x75)=s(x76)∧gt(x77, x76)=false∧(∀x78:gt(x77, x76)=false∧max(x78)=x76 ⇒ COND2(false, x77, x78)≥ST(s(x77), x78)) ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(x71), cons(x82, x75))≥ST(s(s(x71)), cons(x82, x75)))
(42) (x85=s(x72)∧gt(x84, x81)=false∧max(x75)=x85∧gt(x71, x72)=false∧(∀x73:gt(x71, x72)=false∧max(x73)=x72 ⇒ COND2(false, x71, x73)≥ST(s(x71), x73))∧(∀x76,x77,x78:max(x75)=s(x76)∧gt(x77, x76)=false∧(∀x78:gt(x77, x76)=false∧max(x78)=x76 ⇒ COND2(false, x77, x78)≥ST(s(x77), x78)) ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(x71), cons(x84, x75))≥ST(s(s(x71)), cons(x84, x75)))
(43) (gt(x71, x72)=false∧(∀x76,x77:max(x75)=s(x76)∧gt(x77, x76)=false ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(x71), cons(s(x72), x75))≥ST(s(s(x71)), cons(s(x72), x75)))
(44) (gt(x84, x81)=false∧max(x75)=s(x72)∧gt(x71, x72)=false∧(∀x73:gt(x71, x72)=false∧max(x73)=x72 ⇒ COND2(false, x71, x73)≥ST(s(x71), x73))∧(∀x76,x77,x78:max(x75)=s(x76)∧gt(x77, x76)=false∧(∀x78:gt(x77, x76)=false∧max(x78)=x76 ⇒ COND2(false, x77, x78)≥ST(s(x77), x78)) ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(x71), cons(x84, x75))≥ST(s(s(x71)), cons(x84, x75)))
(45) (false=false∧(∀x76,x77:max(x75)=s(x76)∧gt(x77, x76)=false ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75)) ⇒ COND2(false, s(0), cons(s(x86), x75))≥ST(s(s(0)), cons(s(x86), x75)))
(46) (gt(x88, x89)=false∧(∀x76,x77:max(x75)=s(x76)∧gt(x77, x76)=false ⇒ COND2(false, s(x77), x75)≥ST(s(s(x77)), x75))∧(∀x90,x91,x92:gt(x88, x89)=false∧(∀x91,x92:max(x90)=s(x91)∧gt(x92, x91)=false ⇒ COND2(false, s(x92), x90)≥ST(s(s(x92)), x90)) ⇒ COND2(false, s(x88), cons(s(x89), x90))≥ST(s(s(x88)), cons(s(x89), x90))) ⇒ COND2(false, s(s(x88)), cons(s(s(x89)), x75))≥ST(s(s(s(x88))), cons(s(s(x89)), x75)))
(47) (COND2(false, s(0), cons(s(x86), x75))≥ST(s(s(0)), cons(s(x86), x75)))
(48) (COND2(false, s(x88), cons(s(x89), x75))≥ST(s(s(x88)), cons(s(x89), x75)) ⇒ COND2(false, s(s(x88)), cons(s(s(x89)), x75))≥ST(s(s(s(x88))), cons(s(s(x89)), x75)))
(49) (gt(x84, x81)=false∧COND2(false, s(x71), x75)≥ST(s(s(x71)), x75) ⇒ COND2(false, s(x71), cons(x84, x75))≥ST(s(s(x71)), cons(x84, x75)))
(50) (false=false∧COND2(false, s(x71), x75)≥ST(s(s(x71)), x75) ⇒ COND2(false, s(x71), cons(0, x75))≥ST(s(s(x71)), cons(0, x75)))
(51) (gt(x95, x96)=false∧COND2(false, s(x71), x75)≥ST(s(s(x71)), x75)∧(∀x97,x98:gt(x95, x96)=false∧COND2(false, s(x97), x98)≥ST(s(s(x97)), x98) ⇒ COND2(false, s(x97), cons(x95, x98))≥ST(s(s(x97)), cons(x95, x98))) ⇒ COND2(false, s(x71), cons(s(x95), x75))≥ST(s(s(x71)), cons(s(x95), x75)))
(52) (COND2(false, s(x71), x75)≥ST(s(s(x71)), x75) ⇒ COND2(false, s(x71), cons(0, x75))≥ST(s(s(x71)), cons(0, x75)))
(53) (COND2(false, s(x71), cons(x95, x75))≥ST(s(s(x71)), cons(x95, x75)) ⇒ COND2(false, s(x71), cons(s(x95), x75))≥ST(s(s(x71)), cons(s(x95), x75)))
POL(0) = 0
POL(COND1(x1, x2, x3)) = -1 - x1 - x2 + x3
POL(COND2(x1, x2, x3)) = -1 - x1 - x2 + x3
POL(ST(x1, x2)) = -1 - x1 + x2
POL(c) = -2
POL(cons(x1, x2)) = x1 + x2
POL(equal(x1, x2)) = 0
POL(false) = 0
POL(gt(x1, x2)) = 0
POL(if(x1, x2, x3)) = 1
POL(max(x1)) = 0
POL(member(x1, x2)) = 0
POL(nil) = 0
POL(or(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
The following rules are usable:
COND1(true, n, l) → ST(s(n), l)
COND2(false, n, l) → ST(s(n), l)
false → gt(0, v)
or(equal(n, m), member(n, l)) → member(n, cons(m, l))
false → member(n, nil)
gt(u, v) → gt(s(u), s(v))
true → gt(s(u), 0)
x → or(x, false)
true → or(x, true)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
ST(n, l) → COND1(member(n, l), n, l)
COND1(false, n, l) → COND2(gt(n, max(l)), n, l)
max(nil) → 0
max(cons(u, l)) → if(gt(u, max(l)), u, max(l))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
if(true, u, v) → u
if(false, u, v) → v
member(n, nil) → false
member(n, cons(m, l)) → or(equal(n, m), member(n, l))
equal(0, 0) → true
equal(s(x), 0) → false
equal(0, s(y)) → false
equal(s(x), s(y)) → equal(x, y)
or(x, true) → true
or(x, false) → x
member(x0, nil)
member(x0, cons(x1, x2))
or(x0, true)
or(x0, false)
equal(0, 0)
equal(s(x0), 0)
equal(0, s(x0))
equal(s(x0), s(x1))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
max(nil)
max(cons(x0, x1))
if(true, x0, x1)
if(false, x0, x1)